/*
 * calle.h
 *
 *  Created on: Jul 23, 2014
 *      Author: diego
 */

#ifndef CALLE_H_
#define CALLE_H_

#include <string>
#include <vector>
#include <queue>
#include "vehiculo.h"

typedef	std::priority_queue<Vehiculo*,std::vector<Vehiculo*>,compVehiculo> colaPrioridad ; 

class Calle {
	private: 
		std::string nombre ; 
	 	colaPrioridad * vehiculos ;
		int capacidad ;  
	public: 
		Calle(std::string nombre, int capacidad) { 
			this->nombre = nombre ; 
			this->capacidad = capacidad ; 
			vehiculos = new colaPrioridad () ; 
		}

		int getPeso() {
			return (int) vehiculos->size() ;
		} 

		void agregarVehiculo(Vehiculo & v){
			vehiculos->push(&v) ; 
		} 

		Vehiculo & sacarVehiculo() {
			Vehiculo & v = *(vehiculos->top()) ; 
			vehiculos->pop() ;
			return v ;
		}

		std::string getNombre() {
			return nombre ;
		} 
		
} ;




#endif /* CALLE_H_ */
